import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './api/axios.js';
import axios from 'axios';
import ElementUI from 'element-ui';
import VueCookie from 'vue-cookie';   //引入vue-cookie
import 'element-ui/lib/theme-chalk/index.css'; // 默认主题
// import '../static/css/theme-green/index.css';       // 浅绿色主题
import "./assets/css/main.css";
import './assets/css/icon.css';
import './components/common/directives';
import "babel-polyfill";
// 注册全局组件
import CR_Component from './components/common/index.js';
Vue.use(CR_Component);
import * as util from './utils'
Vue.prototype.util = util

Vue.config.productionTip = false
Vue.use(ElementUI, {
    size: 'small'
});
//例：this.$cookie.set('name','xxx',1)   this.$cookie.get('name')   this.$cookie.delete('name')
Vue.use(VueCookie);

//引入公共filter过滤器
import vueFilter from '@/assets/js/filter.js'
for (let key in vueFilter){ 
    Vue.filter(key,vueFilter[key]) 
}

//配置axios
Vue.prototype.$axios = axios;
let axiosPromiseArr=[] //储存cancel token
axios.interceptors.request.use(function (config) {
    // 在发送请求设置cancel token
    config.cancelToken = new axios.CancelToken(cancel => {
        axiosPromiseArr.push({cancel})
    })
    return config;
});

//使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => {
    const that = Vue.prototype;
    //切换路由时对axios请求进行清除
    axiosPromiseArr.forEach((ele, index) => {
        ele.cancel()
        delete axiosPromiseArr[index]
    });
    if (to.meta.permission) {
        // 如果是管理员权限则可进入，这里只是简单的模拟管理员权限而已
        role === 'admin' ? next() : next('/403');
    } else {
        // 简单的判断IE10及以下不进入富文本编辑器，该组件不兼容
        if (navigator.userAgent.indexOf('MSIE') > -1 && to.path === '/editor') {
            that.$alert('vue-quill-editor组件不兼容IE10及以下浏览器，请使用更高版本的浏览器查看', '浏览器不兼容通知', {
                confirmButtonText: '确定'
            });
        } else {
            next();
        }
    }
})


new Vue({
    router,
    render: h => h(App)
}).$mount('#app')